Course Name | Advanced C++: Templates and Generic Programming |
Code | Semester | Theory (hour/week) | Application/Lab (hour/week) | Local Credits | ECTS |
---|---|---|---|---|---|
SE 310 | Fall/Spring | 3 | 0 | 3 | 5 |
Prerequisites | None | |||||
Course Language | English | |||||
Course Type | Elective | |||||
Course Level | First Cycle | |||||
Mode of Delivery | - | |||||
Teaching Methods and Techniques of the Course | ||||||
Course Coordinator | ||||||
Course Lecturer(s) | ||||||
Assistant(s) | - |
Course Objectives | C++ is currently the most widely used programming language in industry, thanks to its flexible design, scalability and efficiency. The objective of this course is to improve on the students C++ knowledge and programming skills by introducing them to the cutting edge practices in C++ language, including Standard Template Library (STL), template programming techniques, generic programming, and selected Boost C++ Libraries. Topics include programming with templates, advanced template programming techniques, template specializations, traits, overview of GUI programming in C++, overview of Standard Template Library, STL containers, STL iterators, standard algorithms, and some selected Boost C++ libraries |
Learning Outcomes | The students who succeeded in this course;
|
Course Description | This course covers the principals behind the templates and generic programming, and introduces students to the state of the art generic libraries. |
Related Sustainable Development Goals | |
| Core Courses | |
Major Area Courses | X | |
Supportive Courses | ||
Media and Managment Skills Courses | ||
Transferable Skill Courses |
Week | Subjects | Required Materials |
1 | Introduction and motivation. Overview of Object Oriented Programming in C++ | Inheritance, Polymorphism, Abstraction, Encapsulation, Data Hiding, Exception handling |
2 | Basic template overview. Function and class templates. | David Vandevoorde and Nicolai M. Josuttis. C++ Templates: The Complete Guide. Addison Wesley, 2003. (Course book) Chapter 2, Chapter 3 |
3 | Nontype template parameters, tricky basics | Course book Chapter 4, Chapter 5 |
4 | Using templates in practice | Course book Chapter 6 |
5 | The polymorphic power of templates | Course book Chapter 14 |
6 | Traits and policy classes | Course book Chapter 15 |
7 | Templates and inheritance | Course book Chapter 16 |
8 | GUI programming with QT 4.6 Framework | C++ GUI Programming with Qt 4 (2nd Edition) (Prentice Hall Open Source Software Development Series) Prentice Hall, 2008 |
9 | Introduction to Standard Template Library | Josuttis, Nicolai M. The C++ standard library: a tutorial and reference. Addison Wesley, 1999 (STL Book) Chapter 2 |
10 | Associative Containers: Map, Multimap, Set, and Multiset. | STL Book Chapter 6 |
11 | STL iterators | STL Book Chapter 7 |
12 | STL algorithms | STL Book Chapter 8 |
13 | Boost Smart Pointers | Boost C++ libraries website |
14 | Other Selected Boost C++ Libraries | Boost C++ libraries website |
15 | Project Presentations | |
16 | Review of the Semester |
Course Notes/Textbooks | David Vandevoorde and Nicolai M. Josuttis. C++ Templates: The Complete Guide. Addison Wesley, 2003. Instructor notes and lecture slides. |
Suggested Readings/Materials | C++ GUI Programming with Qt 4 (2nd Edition) (Prentice Hall Open Source Software Development Series) Prentice Hall, 2008 Josuttis, Nicolai M. The C++ standard library: a tutorial and reference. Addison Wesley, 1999Boost C++ libraries website |
Semester Activities | Number | Weigthing |
Participation | 1 | 10 |
Laboratory / Application | ||
Field Work | ||
Quizzes / Studio Critiques | ||
Portfolio | ||
Homework / Assignments | ||
Presentation / Jury | ||
Project | 1 | 30 |
Seminar / Workshop | ||
Oral Exam | ||
Midterm | 1 | 20 |
Final Exam | 1 | 40 |
Total |
Weighting of Semester Activities on the Final Grade | 60 | |
Weighting of End-of-Semester Activities on the Final Grade | 40 | |
Total |
Semester Activities | Number | Duration (Hours) | Workload |
---|---|---|---|
Course Hours (Including exam week: 16 x total hours) | 16 | 3 | 48 |
Laboratory / Application Hours (Including exam week: 16 x total hours) | 16 | ||
Study Hours Out of Class | 15 | 2 | 30 |
Field Work | |||
Quizzes / Studio Critiques | |||
Portfolio | |||
Homework / Assignments | |||
Presentation / Jury | |||
Project | 1 | 15 | |
Seminar / Workshop | |||
Oral Exam | |||
Midterms | 1 | 22 | |
Final Exams | 1 | 35 | |
Total | 150 |
# | Program Competencies/Outcomes | * Contribution Level | ||||
1 | 2 | 3 | 4 | 5 | ||
1 | To have adequate knowledge in Mathematics, Science and Industrial Engineering; to be able to use theoretical and applied information in these areas to model and solve Industrial Engineering problems. | X | ||||
2 | To be able to identify, formulate and solve complex Industrial Engineering problems by using state-of-the-art methods, techniques and equipment; to be able to select and apply proper analysis and modeling methods for this purpose. | X | ||||
3 | To be able to analyze a complex system, process, device or product, and to design with realistic limitations to meet the requirements using modern design techniques. | X | ||||
4 | To be able to choose and use the required modern techniques and tools for Industrial Engineering applications; to be able to use information technologies efficiently. | X | ||||
5 | To be able to design and do simulation and/or experiment, collect and analyze data and interpret the results for investigating Industrial Engineering problems and Industrial Engineering related research areas. | X | ||||
6 | To be able to work efficiently in Industrial Engineering disciplinary and multidisciplinary teams; to be able to work individually. | X | ||||
7 | To be able to communicate effectively in Turkish, both orally and in writing; to be able to author and comprehend written reports, to be able to prepare design and implementation reports, to present effectively; to be able to give and receive clear and comprehensible instructions | |||||
8 | To have knowledge about contemporary issues and the global and societal effects of Industrial Engineering practices on health, environment, and safety; to be aware of the legal consequences of Industrial Engineering solutions. | X | ||||
9 | To be aware of professional and ethical responsibility; to have knowledge of the standards used in Industrial Engineering practice. | X | ||||
10 | To have knowledge about business life practices such as project management, risk management, and change management; to be aware of entrepreneurship and innovation; to have knowledge about sustainable development. | X | ||||
11 | To be able to collect data in the area of Industrial Engineering; to be able to communicate with colleagues in a foreign language. | X | ||||
12 | To be able to speak a second foreign at a medium level of fluency efficiently. | |||||
13 | To recognize the need for lifelong learning; to be able to access information, to be able to stay current with developments in science and technology; to be able to relate the knowledge accumulated throughout the human history to Industrial Engineering. | X |
*1 Lowest, 2 Low, 3 Average, 4 High, 5 Highest